#include "unity.h"
#include "logger.h"

// 测试初始化函数
void test_init_logger(void) {
    multi_sink::Logger& logger = multi_sink::Logger::getInstance();
    int result = logger.init("CPP_LOGGER");
    TEST_ASSERT_EQUAL_INT(0, result);
}

// 测试信息日志记录函数
void test_log_info(void) {
    multi_sink::Logger& logger = multi_sink::Logger::getInstance();
    // 初始化日志记录器
    logger.init();
    // 记录信息日志
    logger.info("Test info message");
    // 这里我们主要测试函数是否能正常调用，不抛出异常即可
    TEST_PASS();
}

// 测试警告日志记录函数
void test_log_warn(void) {
    multi_sink::Logger& logger = multi_sink::Logger::getInstance();
    // 记录警告日志
    logger.warn("Test warn message");
    // 这里我们主要测试函数是否能正常调用，不抛出异常即可
    TEST_PASS();
}

// 测试错误日志记录函数
void test_log_error(void) {
    multi_sink::Logger& logger = multi_sink::Logger::getInstance();
    // 记录错误日志
    logger.error("Test error message");
    // 这里我们主要测试函数是否能正常调用，不抛出异常即可
    TEST_PASS();
}

// 测试销毁函数
void test_destroy_logger(void) {
    multi_sink::Logger& logger = multi_sink::Logger::getInstance();
    // 销毁日志记录器
    logger.destroy();
    // 这里我们主要测试函数是否能正常调用，不抛出异常即可
    TEST_PASS();
}

// 设置函数
void setUp(void) {
    // 在每个测试函数运行前执行
}

// 清理函数
void tearDown(void) {
    // 在每个测试函数运行后执行
}

// 主函数
int main(void) {
    UNITY_BEGIN();
    RUN_TEST(test_init_logger);
    RUN_TEST(test_log_info);
    RUN_TEST(test_log_warn);
    RUN_TEST(test_log_error);
    RUN_TEST(test_destroy_logger);
    return UNITY_END();
}